#include <stdio.h>
#include <string.h>
#include <iostream>
#include <algorithm>
#include <map>
using namespace std;
#define maxn 35
int n;
map<string,int>money;
double dp[maxn][maxn];

void Floyd()
{
    for(int i=1;i<=n;i++)
        for(int j=1;j<=n;j++)
            for(int k=1;k<=n;k++)
                dp[i][j]=max(dp[i][j],dp[i][k]*dp[k][j]);
}

int main()
{
    int cnt=1;
    while(cin>>n&&n)
    {
        memset(dp,0,sizeof(dp));
        money.clear();
        for(int i=1;i<=n;i++)
        {
            string str;
            cin>>str;
            money.insert(make_pair(str,i));
            dp[i][i]=1;
        }
        int m;
        cin>>m;
        for(int i=1;i<=m;i++)
        {
            string str1,str2;
            double r;
            cin>>str1>>r>>str2;
            dp[money[str1]][money[str2]]=r;
        }
        Floyd();
        int flag=0;
        for(int i=1;i<=n;i++)
            if(dp[i][i]>1)
            {
                flag=1;
                break;
            }
        if(flag==1) cout<<"Case "<<cnt++<<" Yes"<<endl;
        else cout<<"Case "<<cnt++<<" No"<<endl;
    }
    return 0;
}